package io.adrainty.bolee.security.repository;

import io.adrainty.bolee.security.models.entity.CompanyEntity;
import jakarta.annotation.Nullable;

import java.util.List;

/**
 * <p>ICompanyRepository</p>
 *
 * @author AdRainty
 * @version V1.0.0
 * @description ICompanyRepository
 * @since 2025/8/1 13:53:43
 */
public interface ICompanyRepository {

    /**
     * 获取所有有效的企业
     * @return 企业列表
     */
    List<CompanyEntity> listValidateCompany();

    /**
     * 刷新企业站点缓存
     * @param companyEntity 企业信息
     */
    void refreshCompanyWebsiteCache(CompanyEntity companyEntity);

    /**
     * 移除企业站点缓存
     * @param companyEntity 企业信息
     */
    void removeCompanyWebsiteCache(CompanyEntity companyEntity);

    /**
     * 获取企业信息
     * @param companyNo 企业编号
     * @return 企业信息
     */
    @Nullable
    CompanyEntity findCompanyEntity(String companyNo);

    /**
     * 创建企业
     * @param companyEntity 企业信息
     * @return 创建结果, 如果为null说明创建失败
     */
    @Nullable
    CompanyEntity createCompany(CompanyEntity companyEntity);

}
